package cn.com.csg.smartenergy.modules.biz.entity;
import cn.com.csg.smartenergy.modules.biz.validator.group.AddGroup;
import cn.com.csg.smartenergy.modules.biz.validator.group.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 * 产品
 *
 * @author Mark sunlightcs@gmail.com
 * @email anada_lee@163.com
 * @date 2019-07-29 17:06:17
 */
@Data
@TableName("iot_product")
public class IotProductEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId
    private Long id;
    /**
     * 产品名称
     */
    @NotBlank(message="产品名称不能为空")
    @Size(min = 1, max = 30, message = "产品名称长度必须在1~30位", groups = {AddGroup.class, UpdateGroup.class})
    private String productName;
    /**
     * 制造商ID
     */
    @NotBlank(message="制造商ID不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String manufacturerId;
    /**
     * 制造商名称
     */
    @NotBlank(message="制造商名称不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String manufacturerName;
    /**
     * 设备型号，考虑到一款设备下的多种型号建议包含字母或数字来保证可扩展性。
     */
    @NotBlank(message="设备型号不能为空")
    @Size(min = 1, max = 30, message = "产品型号长度必须在1~30位", groups = {AddGroup.class, UpdateGroup.class})
    private String model;
    /**
     * 设备接入平台的协议类型。如NBIoT的设备取值为CoAP。 (见字典表)
     */
    @NotBlank(message="协议类型不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String protocolType;
    /**
     * 设备类型
     */
    @NotBlank(message="设备类型不能为空")
    @Size(min = 1, max = 30, message = "设备类型长度必须在1~30位", groups = {AddGroup.class, UpdateGroup.class})
    private String deviceType;

    /**
     * 适用设备种类
     */
    private String deviceCategory;
    /**
     * 故指类型
     */
    private String fldDeviceType;
    /**
     * 开关路数
     */
    private String switchNum;
    /**
     * 所属行业 (见字典表)
     */
    private String industryCode;
    /**
     * 产品图片
     */
    private String picUrl;
    /**
     * 是否删除 -1：删除 0：保留
     */
    @TableLogic
    private Integer delFlag;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 创建人员ID
     */
    private Long createUser;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 更新人员ID
     */
    private Long updateUser;
    /**
     * 所属行业名称
     */
    @TableField(exist=false)
    private String industryName;
    /**
     * 创建人员名称
     */
    @TableField(exist=false)
    private String createUserName;
    /**
     * 更新人员名称
     */
    @TableField(exist=false)
    private String updateUserName;
    /**
     * 服务类型
     */
    @TableField(exist=false)
    private String serviceTypeCapabilities;
}
